/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.beans;

import java.util.Date;
import java.util.List;
import org.cip.esymons.eventos.bc.AmbienteDelegate;
import org.cip.esymons.eventos.be.Ambiente;
import org.cip.esymons.general.be.ComiteLocal;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

/**
 *
 * @author OscarA
 */
public class AmbienteController {

    AmbienteDelegate delegate;
    Ambiente ambiente;
    List<Ambiente> listaAmbiente;
    ComiteLocal comiteLocal;
    String estadoA;
    String estadoB;
    String ambienteBusqueda;

    public AmbienteController() {
        inicializar();
    }

    public void inicializar() {
        ambiente = new Ambiente();
        ambienteBusqueda = null;
        listaAmbiente = new ArrayList<Ambiente>();
        comiteLocal = new ComiteLocal();
        estadoA = "1";
        delegate = new AmbienteDelegate();
    }

    //<editor-fold defaultstate="collapsed" desc="Gets y Sets">
    public Ambiente getAmbiente() {
        return ambiente;
    }

    public void setAmbiente(Ambiente ambiente) {
        this.ambiente = ambiente;
    }

    public String getAmbienteBusqueda() {
        return ambienteBusqueda;
    }

    public void setAmbienteBusqueda(String ambienteBusqueda) {
        this.ambienteBusqueda = ambienteBusqueda;
    }

    public AmbienteDelegate getDelegate() {
        return delegate;
    }

    public String getEstadoA() {
        return estadoA;
    }

    public void setEstadoA(String estadoA) {
        this.estadoA = estadoA;
    }

    public String getEstadoB() {
        return estadoB;
    }

    public void setEstadoB(String estadoB) {
        this.estadoB = estadoB;
    }

    public ComiteLocal getComiteLocal() {
        return comiteLocal;
    }

    public void setComiteLocal(ComiteLocal comiteLocal) {
        this.comiteLocal = comiteLocal;
    }

    public List<Ambiente> getListaAmbiente() {
        listar_Todos();
        return listaAmbiente;
    }

    public void setListaAmbiente(List<Ambiente> listaAmbiente) {
        this.listaAmbiente = listaAmbiente;
    }
    // // </editor-fold>

    public boolean validarAmbiente() {
        if (validarStrings(ambiente.getAmbNombre())) {
            if (validarStrings(ambiente.getAmbDescripcion())) {
            } else {
                mostrarMensaje("Error", "Ingrese Descripcion del Ambiente", FacesMessage.SEVERITY_ERROR);
                return false;
            }
        } else {
            mostrarMensaje("Error", "Ingrese Nombre del Ambiente", FacesMessage.SEVERITY_ERROR);
            return false;
        }
        return true;
    }

    public String guardar_ambiente() {
        try {
            if (validarAmbiente()) {
                ambiente.setAmbfechaActualizacion(new Date());
                ambiente.setAmbTieneimagen(false);
                ambiente.setAmbfechaRegistro(new Date());
                ambiente.setCloCodigo(comiteLocal);
                ambiente.setAmbEstado(Integer.parseInt(estadoA));
                delegate.crearAmbiente(ambiente);
                cancelar();
                listar_Todos();
                return "listar";
            }
        } catch (Exception e) {
        }
        inicializar();
        return null;
    }

    public String listar_Todos() {
        try {
            listaAmbiente = delegate.listarAmbiente();
        } catch (Exception e) {
            listaAmbiente = new ArrayList<Ambiente>();
        }
        //cancelar();
        return "";
    }

    public String buscarXLike() {
        try {
            listaAmbiente = delegate.listarAmbienteXLike(ambienteBusqueda);
        } catch (Exception e) {
            listaAmbiente = new ArrayList<Ambiente>();
            cancelar();
        }
        return "";
    }

    public String navegarNuevo() {
        return "nuevo";
    }

    public String navegarListar() {
        return "listar";
    }

    public String cancelar() {
        inicializar();
        return "listar";
    }

    public String eliminarAmbiente() {
        try {
            ambiente.setAmbEstado(6);
            delegate.actualizarAmbiente(ambiente);
            listar_Todos();
        } catch (Exception e) {
        }
        inicializar();
        return "";
    }

    public String actualizar_ambiente() {
        try {
            if (validarAmbiente()) {
                ambiente.setAmbfechaActualizacion(new Date());
                ambiente.setCloCodigo(comiteLocal);
                if (estadoA.equals("2")) {
                    ambiente.setAmbEstado(Integer.parseInt(estadoB));
                } else {
                    ambiente.setAmbEstado(Integer.parseInt(estadoA));
                }
                delegate.actualizarAmbiente(ambiente);
                listar_Todos();
            }
        } catch (Exception e) {

        }
        inicializar();
        return "listar";
    }

    public String navegar_editar() {
        return "editar";
    }

    public SelectItem[] getComboAmbientes() {
        try {
            listaAmbiente = new ArrayList<Ambiente>();
            listaAmbiente = delegate.listarAmbiente();
            SelectItem[] comboAmbiente;
            if (listaAmbiente.size() > 0) {
                comboAmbiente = new SelectItem[listaAmbiente.size()];
                for (int i = 0; i < listaAmbiente.size(); i++) {
                    comboAmbiente[i] = new SelectItem(listaAmbiente.get(i), listaAmbiente.get(i).getAmbNombre());
                }
            } else {
                comboAmbiente = new SelectItem[1];
                comboAmbiente[0] = new SelectItem(new Ambiente(), "No hay mbientes registrados");
            }

            return comboAmbiente;

        } catch (Exception e) {
            //Mensaje al usuario
            listaAmbiente = new ArrayList<Ambiente>();
            SelectItem[] comboAmbiente = new SelectItem[1];
            comboAmbiente[0] = new SelectItem(new Ambiente(), "No hay Ambientes");
            return comboAmbiente;
        }
    }

    public boolean validarStrings(String s) {
        try {
            if (!s.equals("") && !s.isEmpty()) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            return false;
        }
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }
}
